| import qualified Maybe import qualified Prelude
|
| genericReplicate :: Integral b => b -> a -> [a]
genericReplicate | n x | = | genericTake n (repeat x) |
|
| genericTake :: Integral a => a -> [b] -> [b]
genericTake | zu vw | = | genericTake5 zu vw |
genericTake | vx [] | = | genericTake3 vx [] |
genericTake | n (x : xs) | = | genericTake2 n (x : xs) |
genericTake | vy vz | = | genericTake0 vy vz |
|
|
genericTake0 | vy vz | = | error [] |
|
|
genericTake1 | n x xs True | = | x : genericTake (n - 1) xs |
genericTake1 | n x xs False | = | genericTake0 n (x : xs) |
|
|
genericTake2 | n (x : xs) | = | genericTake1 n x xs (n > 0) |
genericTake2 | yv yw | = | genericTake0 yv yw |
|
|
genericTake3 | vx [] | = | [] |
genericTake3 | yy yz | = | genericTake2 yy yz |
|
|
genericTake4 | True zu vw | = | [] |
genericTake4 | zv zw zx | = | genericTake3 zw zx |
|
|
genericTake5 | zu vw | = | genericTake4 (zu == 0) zu vw |
genericTake5 | zy zz | = | genericTake3 zy zz |
|
| import qualified Maybe import qualified Prelude
|
| genericReplicate :: Integral b => b -> a -> [a]
genericReplicate | n x | = | genericTake n (repeat x) |
|
| genericTake :: Integral b => b -> [a] -> [a]
genericTake | zu vw | = | genericTake5 zu vw |
genericTake | vx [] | = | genericTake3 vx [] |
genericTake | n (x : xs) | = | genericTake2 n (x : xs) |
genericTake | vy vz | = | genericTake0 vy vz |
|
|
genericTake0 | vy vz | = | error [] |
|
|
genericTake1 | n x xs True | = | x : genericTake (n - 1) xs |
genericTake1 | n x xs False | = | genericTake0 n (x : xs) |
|
|
genericTake2 | n (x : xs) | = | genericTake1 n x xs (n > 0) |
genericTake2 | yv yw | = | genericTake0 yv yw |
|
|
genericTake3 | vx [] | = | [] |
genericTake3 | yy yz | = | genericTake2 yy yz |
|
|
genericTake4 | True zu vw | = | [] |
genericTake4 | zv zw zx | = | genericTake3 zw zx |
|
|
genericTake5 | zu vw | = | genericTake4 (zu == 0) zu vw |
genericTake5 | zy zz | = | genericTake3 zy zz |
|
| import qualified Maybe import qualified Prelude
|
| genericReplicate :: Integral b => b -> a -> [a]
genericReplicate | n x | = | genericTake n (repeat x) |
|
| genericTake :: Integral b => b -> [a] -> [a]
genericTake | zu vw | = | genericTake5 zu vw |
genericTake | vx [] | = | genericTake3 vx [] |
genericTake | n (x : xs) | = | genericTake2 n (x : xs) |
genericTake | vy vz | = | genericTake0 vy vz |
|
|
genericTake0 | vy vz | = | error [] |
|
|
genericTake1 | n x xs True | = | x : genericTake (n - fromInt (Pos (Succ Zero))) xs |
genericTake1 | n x xs False | = | genericTake0 n (x : xs) |
|
|
genericTake2 | n (x : xs) | = | genericTake1 n x xs (n > fromInt (Pos Zero)) |
genericTake2 | yv yw | = | genericTake0 yv yw |
|
|
genericTake3 | vx [] | = | [] |
genericTake3 | yy yz | = | genericTake2 yy yz |
|
|
genericTake4 | True zu vw | = | [] |
genericTake4 | zv zw zx | = | genericTake3 zw zx |
|
|
genericTake5 | zu vw | = | genericTake4 (zu == fromInt (Pos Zero)) zu vw |
genericTake5 | zy zz | = | genericTake3 zy zz |
|